//
// StoreNuke.Net -  http://www.storenuke.net
// Copyright (c) 2005
// by Robert J Collins ( info@storenuke.net ) of WillowTree Software, Inc. ( http://www.willowtreesoftware.com )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
// to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions 
// of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
// DEALINGS IN THE SOFTWARE.
//

using System;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using StoreNuke.StarterKit.Commerce.Components;

namespace StoreNuke.StarterKit.Commerce.StoreControls
{
	/// <summary>
	///		Summary description for Login.
	/// </summary>
	public class Login : StoreControl
	{
		protected Label Message;
		protected TextBox email;
		protected RequiredFieldValidator emailRequired;
		protected RegularExpressionValidator emailValid;
		protected TextBox password;
		protected RequiredFieldValidator passwordRequired;
		protected CheckBox RememberLogin;
		protected System.Web.UI.WebControls.Button btnRegister;
		protected System.Web.UI.WebControls.Button LoginBtn;

		private void Page_Load(object sender, EventArgs e)
		{
			if(Context.User.Identity.Name != "")
			{
				Response.Cookies["ASPNETCommerce_FullName"].Value = null;
				Response.Cookies["ASPNETCommerce_FullName"].Expires = DateTime.Now.AddDays(-1);
				FormsAuthentication.SignOut();
				Response.Redirect("Default.aspx");
			}
		}

		//*******************************************************
		//
		// The LoginBtn_Click event is used on this page to
		// authenticate a customer's supplied username/password
		// credentials against a database.
		//
		// If the supplied username/password are valid, then
		// the event handler adds a cookie to the client
		// (so that we can personalize the home page's welcome
		// message), migrates any items stored in the user's
		// temporary (non-persistent) shopping cart to their
		// permanent customer account, and then redirects the browser
		// back to the originating page.
		//
		//*******************************************************

		private void LoginBtn_Click(object sender, System.EventArgs e) 
		{

			// Only attempt a login if all form fields on the page are valid
			if (Page.IsValid == true) 
			{
				// Save old ShoppingCartID
				ShoppingCartDB shoppingCart = new ShoppingCartDB();
				String tempCartID = shoppingCart.GetShoppingCartId();

				// Attempt to Validate User Credentials using CustomersDB
				CustomersDB accountSystem = new CustomersDB();
				String customerId = accountSystem.Login(email.Text, Security.Encrypt(password.Text));

				if (customerId != null) 
				{

					// Migrate any existing shopping cart items into the permanent shopping cart
					shoppingCart.MigrateCart(tempCartID, customerId);

					// Lookup the customer's full account details
					CustomerDetails customerDetails = accountSystem.GetCustomerDetails(customerId);

					// Store the user's fullname in a cookie for personalization purposes
					Response.Cookies["ASPNETCommerce_FullName"].Value = customerDetails.FullName;

					// Make the cookie persistent only if the user selects "persistent" login checkbox
					if (RememberLogin.Checked == true) 
					{
						Response.Cookies["ASPNETCommerce_FullName"].Expires = DateTime.Now.AddMonths(1);
					}

					// Redirect browser back to originating page
					FormsAuthentication.RedirectFromLoginPage(customerId, RememberLogin.Checked);
				}
				else 
				{
					Message.Text = "Login Failed!";
				}
			}
		}

		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		///		Required method for Designer support - do not modify
		///		the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.LoginBtn.Click += new System.EventHandler(this.LoginBtn_Click);
			this.btnRegister.Click += new System.EventHandler(this.btnRegister_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void btnRegister_Click(object sender, System.EventArgs e)
		{
			Response.Redirect("Default.aspx?scid=9");
		}
	}
}
